import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
// import { fileURLToPath, URL } from 'node:url'
import path from 'path'

// 样式/组件自动引入
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// Element自动导入图标
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'

// 引入mock
import { viteMockServe } from 'vite-plugin-mock'

// 缓存组件时需要
import vueSetupExtend from 'vite-plugin-vue-setup-extend-plus'

// https://vitejs.dev/config/
//export default defineConfig({
export default defineConfig(({ mode }) => {
  // mode模式字符串，process.cwd()项目 根目录
  // 返回值 import.meta.env
  const env = loadEnv(mode, process.cwd());
  console.log('VITE_APP_SERVICE_URL', env.VITE_APP_SERVICE_URL)
  return {
    plugins: [
      vue(),
      viteMockServe({
        mockPath: './mock', // 设置模拟数据的存储文件夹
        // @ts-ignore
        supportTs: true,//是否读取ts文件模块
        logger: true,//是否在控制台显示请求日志
        localEnabled: true,//设置是否启用本地mock文件
        prodEnabled: true//设置打包是否启用mock功能 
      }),
      vueSetupExtend(), // 使用 <script setup name="xx"> 上name作为缓存组件名
      AutoImport({
        dts: "src/types/auto-import.d.ts",
        resolvers: [
          ElementPlusResolver(),
          // 自动导入图标组件
          IconsResolver({
            prefix: 'Icon',
          }),
        ],
        imports: [
          // 需要自动导入的插件，自定义导入的API
          'vue',
          'vue-router',
          'pinia',
        ],
      }),
      Components({
        dts: 'src/types/components.d.ts', // 指明 .d.ts 文件的位置和文件名
        resolvers: [
          //自动注册图标组件
          IconsResolver({
            enabledCollections: ['ep'],
          }),
          ElementPlusResolver()
        ],
        deep: true, // 搜索子目录
        dirs: ['src/components', 'src/views', 'src/layout'], // 按需加载的文件夹
      }),
      Icons({
        compiler: 'vue3',
        autoInstall: true
      }),
    ],
    resolve: {
      alias: {
        "@": path.resolve(__dirname, './src')
      }
    },
    //base: 'kld',
    server: {
      port: 5173, // 端口号
      open: true, //启动项目自动打开浏览器访问
      host: '0.0.0.0', // 开放给所有ip访问此项目
      proxy: {
        // 匹配以`/dev-api`开头的请求，交给代理服务器转发到目标接口
        //'/dev-api': {
        // [env.VITE_APP_BASE_API]: {  // key是变量要加中括号[]
        //   // 代理后的目标地址
        //   target: env.VITE_APP_SERVICE_URL,
        //   //rewrite: (path) => path.replace(/^\/dev-api/, ''),
        //   rewrite: (path) => path.replace(new RegExp(`^${env.VITE_APP_BASE_API}/`), ''),
        //   // 开启代理
        //   changeOrigin: true,
        // }
      }
    },
  }
});
